package com.hicorp.segment.service;

import com.hicorp.segment.pojo.po.Menu;
import com.hicorp.segment.pojo.po.RoleMenuRelation;
import com.hicorp.segment.pojo.po.User;
import com.hicorp.segment.pojo.po.UserRoleRelation;
import com.hicorp.segment.utils.ResultBean;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @Author: wqs
 * @Date: Created in 4:24 2021/5/19
 * @Description:
 * @ChineseDescription:
 * @Modified_By:
 */
@Service
public interface AuthorityService {
    User getUser(String username);

    /**
     * 用户注册
     * @param user 前端传来的用户信息
     * @return 标准返还
     */
    ResultBean<Void> register(User user);

    /**
     * 查询所有的菜单(返回树形结构)
     * @return 返回树形结构
     */
    ResultBean<List<Menu>> selectAllMenuTree();

    /**
     * 设置角色可访问的菜单
     * @param roleMenuRelations 角色菜单关系
     * @return 是否成功
     */
    ResultBean<Void> setRoleMenuRelation(List<RoleMenuRelation> roleMenuRelations);

    /**
     * 设置用户角色
     * @param userRoleRelations 用户角色关系
     * @return 是否成功
     */
    ResultBean<Void> setUserRoleRelation(List<UserRoleRelation> userRoleRelations);

    /**
     * 根据角色id查询其可访问的菜单的id
     * @param roleId 角色id
     * @return 可访问的菜单的id
     */
    ResultBean<List<Long>> selectMenuIdByRoleId(Long roleId);

    /**
     * 根据用户id查询角色id
     * @param userId 用户id
     * @return 用户角色id
     */
    ResultBean<List<Long>> selectRoleIdByUserId(Long userId);
}
